// 这个文件声明公共宏和函数

#define max(_x, _y)                                                            \
  ({                                                                           \
    typeof(_x) __x = _x;                                                       \
    typeof(_y) __y = _y;                                                       \
    __x > __y ? __x : __y;                                                     \
  })
#define min(_x, _y)                                                            \
  ({                                                                           \
    typeof(_x) __x = _x;                                                       \
    typeof(_y) __y = _y;                                                       \
    __x < __y ? __x : __y;                                                     \
  })

void gemm_nn(int M, int N, int K, float ALPHA, float *A, float *B, float *C);

void gemm_nn_rvv(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);

void gemm_nn_rvv_k(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);

void gemm_nn_rvv_pack(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);

void gemm_nn_rvv_m8(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);

void gemm_nn_rvv_loop_unroll(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);

void gemm_nn_rvv_MNK(int M, int N, int K, float ALPHA, const float *A,
                     const float *B, float *C);
